package com.atguigu.gmall.product.service;

import com.alibaba.fastjson.JSONObject;
import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Service
public interface ManageService {

    //一级查询接口
    List<BaseCategory1> getCategory1();

    //根据一级  二级查询接口
    List<BaseCategory2> getCategory2(long category1Id);

    //根据二级 三级查询接口
    List<BaseCategory3> getCategory3(long category2Id);

    // 根据分类Id 获取平台属性数据！
    List<BaseAttrInfo> getattrInfoList(long category1Id, long category2Id, long category3Id);
    //保存平台属性
    void saveAttrInfo(BaseAttrInfo baseAttrInfo);

    //根据平台属性Id 获取平台属性值集合
    List<BaseAttrValue> getAttrValueList(Long attrId);

    //根据平台属性Id 来获取平台属性对象
    BaseAttrInfo getBaseAttrInfo(Long attrId);

    //spu分页查询
    IPage<SpuInfo> getSpuInfoPage(Page<SpuInfo> spuInfoPage, SpuInfo spuInfo);

    //查询所有销售属性数据
    List<BaseSaleAttr> getBaseSaleAttrList();

    //保存spuInfo
    void saveSpuInfo(SpuInfo spuInfo);

    //获取spuImage 集合
    List<SpuImage> getSpuImageList(Long spuId);

    //根据spuId 来获取销售属性集合
    List<SpuSaleAttr> getSpuSaleAttrList(Long spuId);

    //保存skuInfo
    void saveSkuInfo(SkuInfo skuInfo);

    //  分页显示
    IPage getList(Page<SkuInfo> skuInfoPage);
    //商品上架
    void onSale(Long skuId);

    //商品下架
    void cancelSale(Long skuId);

    //根据SkuId 获取sku信息
    SkuInfo getSkuInfo(Long skuId);

    //根据三级分类id查询分类信息
    BaseCategoryView getCategoryName(Long category3Id);

    //获取sku最新的价格
    BigDecimal getSkuPrice(Long skuId);

    //查询销售属性集合
    List<SpuSaleAttr> getSpuSaleAttrListById(Long skuId, Long spuId);

    //根据spuId 查询map集合属性
    Map getValueIdsAndSkuIdToMap(Long spuId);

    //根据spuId 获取海报数据
    List <SpuPoster>findSpuPosterBySpuId(Long spuId);

    //通过skuId 集合来查询数据
    List<BaseAttrInfo> getBaseAttrInfoList(Long skuId);

     //获取全部分类信息
    List<JSONObject> getBaseCategoryList();
}
